﻿<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" ValidateRequest="false" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>代码生成</title>
<script language="javascript">
    function oCopy(obj) {
        obj.select();
        js = obj.createTextRange();
        js.execCommand("Copy")
        //alert("已经复制所点击的代码到剪贴板!");
    }
</script>
<link href="/css/css.css" rel="stylesheet" type="text/css" />  
</head>
<body>
    <div class="nav">
        <a href="htmlDeal.aspx">html代码提取生成菜单表sql</a>
        <a href="formTools.aspx">表单生成工具</a>
         <a href="DocAddTab.aspx">文档加Tab转Excel</a>
   </div>
        <form id="form1" runat="server">
    <div>
<table class="gridtable" style="width:900px;margin-top:25px;" >
     <thead>
  <tr >
    <th>&nbsp;</th>
    <th class="tdFormRight">代码生成</th>
  </tr>
       </thead>
   <tr >
    <td class="tdFormLeft" style="width:120px">语言：</td>
    <td>
<asp:RadioButtonList ID="rdLanguage" runat="server"     RepeatDirection="Horizontal" RepeatLayout="Flow">
	<asp:ListItem Value="php"  Selected="True">php</asp:ListItem>
	<asp:ListItem Value="asp.net" >asp.net</asp:ListItem>
</asp:RadioButtonList>

	</td>
  </tr> 
   <tr >
    <td class="tdFormLeft" style="width:120px">建表规范：</td>
    <td>
<asp:RadioButtonList ID="rdTblCreateType" runat="server"     RepeatDirection="Horizontal" RepeatLayout="Flow">
	<asp:ListItem Value="1"  Selected="True">正常建表</asp:ListItem>
	<asp:ListItem Value="2" >自动添加create_time等字段</asp:ListItem>
</asp:RadioButtonList>

	</td>
  </tr>    <tr >
    <td class="tdFormLeft">数据库：</td>
    <td>
<asp:RadioButtonList ID="rdDbType" runat="server"     RepeatDirection="Horizontal" RepeatLayout="Flow">
	<asp:ListItem Value="sqlserver"  Selected="True">sql server</asp:ListItem>
	<asp:ListItem Value="mysql" >mysql</asp:ListItem>
	<asp:ListItem Value="orcale" >orcale</asp:ListItem>
</asp:RadioButtonList>

	</td>
  </tr> 
  <tr >
    <td  class="tdFormLeft">表名前缀：</td>
    <td>
        <asp:TextBox ID="txtPre" runat="server" Text="fa_" ></asp:TextBox>     
    </td>
  </tr>
 <tr style="display:none">
    <td  class="tdFormLeft">数据库名：</td>
    <td>
        <asp:TextBox ID="txtDbName" runat="server" Text="buzhizhe" ></asp:TextBox>     
    </td>
  </tr>
  <tr style="display:none">
    <td  class="tdFormLeft">主命名空间：</td>
    <td>
        <asp:TextBox ID="txtNameSpace" runat="server" Text="buzhizhe" ></asp:TextBox>     
    </td>
  </tr>

  <tr>
    <td  class="tdFormLeft">规划文档：</td>
    <td>
        <asp:TextBox ID="txtCont" runat="server" TextMode="MultiLine" Height="166px" Width="746px">
管理员，system_admin,system,2
id,用户名q*，密码l*，姓名q*，联系电话，备注，添加时间0，上次登录时间0，登录次数0，是否可编辑0，状态
id,uname,upass,realname,telephone,memo,adddate,lastlogindate,loginnum，can_edit,status
i,c64,c128,c128,c128,c512,d,d,i,i,i


        </asp:TextBox>     
新增 lq*0 规则，l不显示在列表，q提供查询 * 必填验证 0 添加不需要表单
          <asp:Button ID="btnFormatCheck" runat="server" Text=" 格式校验 " OnClick="btnFormatCheck_Click"  />&nbsp;&nbsp;
        <asp:Label ID="lblFormatMsg" runat="server" Text="" ForeColor="#FF3300"></asp:Label> 
        <span onclick="showFormatMsg()">验证结果</span>   
</td>
  </tr>
 
  <tr style="display:none">
    <td  class="tdFormLeft">导航模板：</td>
    <td>
        <asp:TextBox ID="txtNavTemplate" runat="server" TextMode="MultiLine" Height="166px" Width="746px">
    <a href="/[[tblName]]" class="weui-grid js_grid" data-id="progress">
        <div class="weui-grid__icon">
            <img src="/images/icon_nav_photo.png" alt="">
        </div>
        <p class="weui-grid__label">
            [[tblTitle]]
        </p>
    </a>

        </asp:TextBox>     
    </td>
  </tr>
  <tr>
    <td  class="tdFormLeft">模板文件夹&nbsp;</td>
    <td>
        <asp:RadioButtonList ID="rdTemplateFolders" runat="server"  AutoPostBack="true"
            OnSelectedIndexChanged="rdTemplateFolders_SelectedIndexChanged"
            RepeatLayout="Flow"  RepeatDirection="Horizontal" >
        </asp:RadioButtonList>
    </td>
  </tr>
  <tr>
    <td  class="tdFormLeft">模板文件&nbsp;</td>
    <td>
        <asp:CheckBoxList ID="ckTemplates" runat="server" RepeatLayout="Flow" >
        </asp:CheckBoxList>
    </td>
  </tr>
  

</table>
    <div class="row" style="margin-top:10px;">
        <span style="margin-left:100px;"></span>
        <asp:Button ID="btnGenCode" runat="server" Text=" 生成SQL " OnClick="btnGenCode_Click" />&nbsp;&nbsp;
        <asp:Button ID="btnTestGenrateModel" runat="server" Text=" 生成代码 " OnClick="btnTestGenrateModel_Click"  />&nbsp;&nbsp;
    </div>
        <asp:Label ID="lblMsg" runat="server" Text="" ForeColor="#FF3300"></asp:Label>    
        <asp:Label ID="lblResult" runat="server" Text="" ForeColor="#FF3300"></asp:Label>    
 
        <p>
     
            &nbsp;&nbsp;
        </p>
    </div>
    </form>
<div class="memo">
<pre>

1，Sql语句都在一个文本框输出，模板文件每个表每个模板都单独一个文本框输出
2，模板代码默认生成文件在output文件夹里，可点delete_output_folder.bat 批处理进行删除。
3，模板在templates文件夹里，此文件夹所有文件都被认为是模板
4，模板里变量
[nameSpace]: 命令空间
[tblTitle]：表名称，比如：管理员
[tblName]：表名，比如：systemUsers
[loop start] ：循环开始，要单独占一行，前后除空格外不能有其它字符
[loop end]：循环结束，要单独占一行，前后除空格外不能有其它字符
[fldTitle]：字段名称，只在循环里有效，比如：用户名
[fldName]：字段名，只在循环里有效，比如：userName
[fldType]：字段对应的变量类型，只在循环里有效，比如：string 
{dbName}{nameSpace}{tblName}{fldName} 是对应变量的首字母大写形式

    {strNames} 字段名列表
注：只支持一层循环，不支持嵌套。

5，模板里加^符号表示该行末尾不回车；循环里[loop end]加^符号 则表示循环记录之间不回车。
6，模板文件名命名规则
+号代表目录，[tblName]表名 {tblName} 首字母大写的表名
比如systemUser表，使用模板 Controller+{tblName}Controller.php,生成的文件为 output\Controller\SystemUserController.php
使用模板 View+[tblName]+add.volt,生成的文件为 output\View\systemUser\add.volt

如果不包含[tblName]和{tblName}，则原文件名做文件夹，tblName做文件名
使用模板 model.cs ,生成的文件为 output\model\systemUser.cs

7，在字段循环里
如果包含 id="txt 的字眼，则如果是整型则type设置为number，如果是日期型则type默认为date，另外字段名里包含*，则增加required。


</pre>
    </div>
</body>
</html>
<script>
    var lShow = true;
    function showFormatMsg() {
        if (lShow) {
            $("#lblFormatMsg").hide();
            lShow = false;
        } else {
            $("#lblFormatMsg").show();
            lShow = true;
        }
    }
</script>